#include "TCP.h"

int ctl = 1; // 用来控制 进程是否退出 

void *pthread_read(void * soc);

void *pthread_write(void * soc);


int main(int argc, char const *argv[])
{
    if (3 != argc)
    {
        printf("格式: %s IP地址 端口号\n", argv[0]);
        exit(-1);
    }
    // 建立连接
    int sok_fd = TCP_Init_Client(atoi(argv[2]), argv[1]);


    printf(" =================== 开启聊天 =================== \n");

    pthread_t Tid[2];

    pthread_create( &Tid[0] , NULL , pthread_read , (void *)&sok_fd );
    pthread_create( &Tid[1] , NULL , pthread_write , (void *)&sok_fd );

    pthread_join( Tid[0] , NULL );
    pthread_join( Tid[1] , NULL );


    // 关闭连接
    TCP_close_Sever(NULL, &sok_fd);

    return 0;
}



void *pthread_read(void * soc)
{
    char buf[128];
    int acc_fd = *((int *)soc);
    while (ctl)
    {
        // 接收数据
        memset(buf, 0, sizeof(buf));
        read(acc_fd, buf, sizeof(buf));         // 接收

        // 判断当前是否有数据
        if (strlen(buf) == 0)
        {
            continue;
        }

        // 显示数据
        printf("服务器:%s\n", buf);
        if (!strcmp(buf , "quit\n"))
        {
            ctl = 0;
            return NULL;
        }
        
    }
    return NULL;

}

void *pthread_write(void * soc)
{
    char buf[128];
    int acc_fd = *((int *)soc);
    while (ctl)
    {
        memset(buf, 0, sizeof(buf));
        printf("客户端:");
        fgets(buf, sizeof(buf), stdin);
        buf[strlen(buf) - 1] = '\0';
        write(acc_fd, buf, strlen(buf));        // 发送
        
        if (!strcmp(buf , "quit"))
        {
            ctl = 0;
            return NULL; 
        }
    }
    return NULL;
}


